记一次hvv蓝队中级面试复盘
1、XXE漏洞的原理,使用的协议和危害
🔸如果一个接口支持接收XML数据,且没有对XML数据做任何方面的措施就可能导致XXE漏洞。外部引用可以支持http、file和FTP等协议
危害:
(1).读取任意文件 (2).利用支持的协议执行系统命令 (3).探测内网端口
2、对称加密和非对称加密
🔸对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
对称加密:
优点:算法简单,加密解密容易,效率高,执行快。
缺点:相对来说不算特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么,信息很容易被破译。
常见的对称加密算法:DES,AES,3DES等等。
非对称加密:
优点:安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。作为接收方,务必要保管好自己的密钥。
缺点:加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低
常见的非对称加密算法:RSA,ECC
3、mysql 的udf提权:原理
UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,其实就像使用本地MySQL函数如 user() 或 concat() 等。
在 udf.dll 文件中,我定义了名为 sys_eval() 的 MySQL 函数,该函数可以执行系统任意命令
select * from mysql.func where name = 'sys_eval'; #查看创建的sys_eval函数
select sys_eval('whoami'); #使用系统命令
SQL
当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下。
当 MySQL> 5.1 版本时,将 .dll 文件导入到 MySQL Server 5.xx\lib\plugin 目录下 (lib\plugin目录默认不存在,需自行创建)。
在将 udf.dll 文件写入plugin目录后,我们就可以使用 sys_eval 函数了
两种方式进行 UDF的提权:
(一).通过大马的MySQL提权功能,成功导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd 命令,来执行提权操作。注:在此之前,我们应执行版本查看语句,来确认当前MySQL的版本信息!
net user secist username /add
net localgroup administrators username /add
(二).直接在目标服务器上传 udf.php 此类的提权脚本提权。
4、UDF提权的利用条件
(1)MySQL数据库没有开启安全模式。
(2)已知的数据库账号具有对MySQL数据库insert和delete的权限,最好是root最高权限。
(3)shell有写入到数据库安装目录的权限。
(4)知道绝对路径
5、JAVA 实现RCE漏洞的函数
Runtime.getruntieme.exec("cmd")
new ProcessBuilder().start("cmd")
6、 shiro反序列化有了解过吗,一般是哪两种类型?
shiro 550和shiro 721
7、网络设备有使用过吗,防火墙,路由器,交换机
交换机负责连接网络设备(如交换机、路由器、防火墙、无线AP等)和终端设备(如计算机、服务器、摄像头、网络打印机等);路由器实现局域网与局域网的互联,局域网与Internet的互联;而防火墙作为一个安全网络设备,作用于内部网络与内部网络之间,或者内部网络与Internet之间。总结,交换机负责连接设备,路由器负责连接网络,防火墙负责网络访问限制。
8、态势感知有了解过吗?
态势感知是基于网络环境、动态的、整体的洞悉网络安全风险,以安全大数据为基础,以企业的业务为核心,进行实时的异常检测,实现安全分析智能化与威胁可视化,并提供威胁情报共享、安全态势感知和高级威胁侦测分析等服务。
9、拿到一个网站,如何做渗透,渗透的流程?
信息收集、漏洞扫描、漏洞验证、漏洞利用、权限提升、权限维持、痕迹清理、内网渗透等。
10、sqlmap的命令说一下,sqlmap需要一些脚本绕过操作,有写过脚本吗?
参数:-u URL 、-v 输出日志、-r 读取文件 、--random-agent随机UA、--dbs获取所有数据库、--cookie指定cookie
--level 2 指定测试范围 2可以测试cookie 、--data= 指定post请求参数 、--batch 默认设置
--risk 3 设置威胁级别、--technique= 指定测试的注入类型、-g 代入google查询 -p 指定测试的参数
脚本绕过操作:将所有空格替换为使用随机文本来截断注释,要开始使用篡改脚本,需先使用 --tamper 参数,后面再加上脚本的名称
11、流量分析:
比如中国菜刀:
比如PHP后门的特性:
第一:"eval",eval函数用于执行传递的攻击payload,这是必不可少的;
第二:(base64_decode_$_POST[z0]),将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码
第三:&z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文。
简单说一下冰蝎的2.0和3.0的特征?
冰蝎的2.0:
●二次密钥协商
●accept字段:字段很特殊: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
●UA字段:默认内置十多个
●Content-length :16
冰蝎的3.0
●预共享密钥
●user-agent:内置20多个
●accept:字段特殊
●content-type: text/html;charset=utf-8
Content-Length和Cookie也可以作为特征,只是长度不同情况不一样,Cookie不一定有特征字符串。
12、像这种抓包中,大多数情况下态势感知会对流量监控,如果有文件上传或者其他漏洞报警,如何判定报警是否为误报?
态感之所以报有威胁肯定是匹配到特征库了,当安全设备检测到来自外部或内部的「攻击尝试行为」就会触发告警,需要对告警日志进行研判分析,从其中找出「真实有效」的攻击事件。
攻击方尝试利用现成的「EXP&POC集成脚本工具」对资产目标进行检测扫描,安全设备检测到「攻击尝试行为」中的攻击特征就会产生告警。在通常情况下,可以把告警中的URL的“网页状态码”、“页面回显数据”作为「误报告警」判断的条件。
13、如何有一个webshell已经被上传,如何排查webshell是如何上传的,有什么思路?
1.全面扫描:隔离webshell,但是需要判断代码的内容,避免误删
2.手动全面查杀:
命令查找关键函数:PHP : find 网站目录/* -type f -name "*.php" |xargs grep "eval"
JSP:find 网站目录/* -type f -name "*.php" |xargs grep "eval"
jspx 文件:find 网站目录/* -type f -name "*.jspx" |xargs grep "getRuntime"
查找异常端口进程情况:查找异常端口进程情况:Linux :netstat -anltp|grep bash
查看目前的网络连接,定位可疑的ESTABLISHED,根据 netstat 定位出的 pid,再通过 tasklist 命令进行进程定位 tasklist | findstr “PID”
3.分析应用的日志,中间件日志,系统操作日志等。
4.使用流量设备定位webshell
14、安全项目有做过吗?
●CTF靶机渗透:
●流量分析:
●代码审计:
●漏洞挖掘:
这几个方向去说
15、像这种thinkphp rce漏洞/shiro漏洞有复现过吗?
thinkphp rce漏洞:比如5.0版本有个rce漏洞,该漏洞的漏洞关键点存在于thinkphp/library/think/Request.php文件中
在docker中复现了多种版本的rce漏洞。
shiro漏洞:在docker中复现了多个漏洞。
漏洞的原理有了解吗,攻击后的返回包的有分析过吗?
THINKPHP RCE漏洞的原理:举例有一个RCE是这样的:Dispatcher.class.php中res参数中使用了preg_replace的/e危险参数,使得preg_replace第二个参数就会被当做php代码执行,导致存在一个代码执行漏洞,攻击者可以利用构造的恶意URL执行任意PHP代码。
shiro:shiro 是常见的java的安全框架,执行身份认证,授权,密码和会话,只要rememberMe的AES加密密钥被泄露。就会导致反序列化漏洞。
刚才提到了一种,另一种是由于apache shiro cookie中通过AES-128-CBC模式加密后的rememberMe字段存在问题,攻击者可以通过Padding Oracle加密生成攻击代码来构造恶意的rememberMe字段并重新请求网站,构成RCE
攻击后的返回包暂时还没有进行分析,但是我具备分析的能力。
如果给一个数据包,是漏洞利用的数据包,比如是一个RCE漏洞,怎么判定是否是一个误报?有没有什么思路?
可以看回显数据包信息来判断
16、最新的漏洞有了解过吗?
有了解过去年12月爆发的apache log4j漏洞:
apache log4j是基于java的开源日志记录工具,通过log4j可以控制日志信息的输出目的地是控制台、文件、gui组件甚至是套接口服务器、事件记录器、syslog守护进程等。我们也可以控制每一条日志的输出格式。最新版本的cve-2021-44228漏洞影响的是2.15.0之前的版本,存在通过LDAP JNDI解析器的代码执行的漏洞。
17、看你有过开发的经验,有写过sql注入脚本,说一下这个脚本的情况?
这个是用python写的一个自动化注入脚本,脚本利用了re、requests、beautifulsoup、socket、os、sys、hackrequests等模块
具备收集信息测试盲注等功能
18、SQL注入类型和函数,替代函数
时间盲注的函数:sleep、benchmark、笛卡尔积、GET-LOCK加锁、正则匹配
布尔盲注的函数:left、substr、length、mid、ascii、regexp正则
19、平台上有一个RCE漏洞告警,比如是通达OA的,如何识别攻击成功?
OA有很多:通达OA,致远OA,泛微OA
首先我会把告警中的数据包提取一下,把一些敏感字符串丢到百度上查询一下,看看有没有相似的漏洞复现
然后找到对应的POC或者EXP,比对数据包中的poc或exp,看看相同不相同
之后要看返回包,可以复现成功得返回信息是否一致,如果一致就是攻击成功,如果不一致就不成功
20、mysql在linux的配置文件是哪个?
my.cnf
1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。
2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。
3、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的
21、如何判断使用的什么数据库?
判断web后台数据库类型的方法
一、根据网页编程语言去判断
ASP和.NET:Microsoft SQL Server
PHP:MySQL、PostgreSQL
Java:Oracle、MySQL以上是常见的搭配。
二、根据数据库报错判断
输入单引号报错
mysql:error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
mssql:因为mssql是微软公司的,里面出现微软的英文名字Microsoft还有ODBC也是mssql特有的。
ORA的是ORACLE。
22、可以用编码的方式绕过吗?用什么方式编吗?
1.URL编码、2.十六进制编码、3.Unicode编码
23、XSS如何检测,有什么危害。被过滤了如何绕过?
1、大小写和双写绕过 2、a标签 3、src属性 4、利用事件绕过
xss绕过
24、文件上传如何判断是白名单还是黑名单?哪种方式更好,为什么?
如果测试只能上传特定的文件类型比如图片,其他任意类型都不可上传,即为白名单
如果测试只有特定的文件不能上传,其他类型都可以上传,即为黑名单。
白名单更好。因为不容易被绕过
●黑名单:明确不允许上传的文件格式后缀
●常见脚本格式:ASP、PHP、JSP、ASPX、cgi、war …
●可能绕过方式(与网站搭建平台和设置格式有关):php5 、phtml …
白名单:明确可以上传的文件格式:
●JPG、PNG、zip、rar、gif …
●黑名单要安全一些
25、溯源如果挂了代理怎么做?
① 首先我要去查看报警日志,看一下是IP还是域名
情况1:如果是域名可以挂CDN,国外CloudFlare
情况1:如果没有CDN,用多地ping或者dns查询获取真实IP
情况2:如果有CDN,用各种方法
情况2:如果是IP,就需要查看数据包类型,有可能是http,tcp,.....
情况1:如果是http,我可以去查看一下数据包的请求,有一些字段会暴露代理IP
REMOTE_ADDR 如果使用了代理就是代理IP,没有使用就是自己的IP
除此之外还有其他的一些字段,HTTP_X_FORWARDED_FOR
情况2:如果是socks,比如sock4或sock5,有一种情况是sock协议不会使用udp协议
我可以给IP发UDP数据包,查看返回信息,如果没有正确响应就说是代理
WebRTChttps://mp.weixin.qq.com/s?src=11×tamp=1646961265&ver=3669&signature=XDbIgvEJDWD6enRontJhcl2STnH40euvcN96hWQ4XeLtf2D6bF*sRr0RPWSHQuoZ-qoNyiuK0Lrel7aybA9SuZzcanW2HHdF4YevlvC3vlGc-HEM6GYzrNcNqXnrKV&new=1
26、Nginx的日志放在那里,如何进行分析?主要看哪些你认为重要的地方?
配置文件/etc/nginx/nginx.conf
Nginx的日志分为访问日志access_log和错误日志error_log两大块,前者主要记录用户每次访问的情况,后者则侧重于服务器的具体错误,比如返回403的具体原因是文件不可读还是权限不足之类的。
分析access_log:
1、可以根据每个所关心的字段读取频率最高的前十看看是否有什么出乎意料的情况,以客户端IP,客户端User-Agent,
以及返回状态码为例。
2、流量观察:对于一般网站来说流量监控也是比较重要的,所以根据访问时间,可以统计出每天的访问量和一天中平均各个时间段的访问量:
分析error_log:
错误类型、路径错误、SEO(搜索引擎优化)、查错示例
27、系统日志放在那里?
windows的在Windows\System32\winevt\Logs
linux的var/log
28、护网中用到的安全设备了解过吗?
IDS/IPS、态势感知,蜜罐,沙箱
29、遇到了IDS/IPS你如何对抗?
回答了绕过,问:如何绕过:
IDS工作在网络层,旁路部署,通过抓取和分析网络流量来发现攻击;IPS一般也是在网络层旁路,可以理解为具备阻断能力的IDS,是IDS的升级版,可以覆盖网络层和应用层;WAF是在应用层防护Web攻击的程序,一般是跟Web接入层对接,可旁路可串行,仅能覆盖应用层
IPS的旁路防护原理很简单,其经典代表如开源的Snort,就是在网络上分析流量,发现符合规则的流量则冒充服务端回包响应客户端实现阻断或者替换的目的,这是一种典型的链路劫持手法。常见的场景是封禁网站(如非法网站的封禁)、篡改网页内容(运营商插广告)、阻断端口扫描和漏洞攻击(IPS),实施链路劫持的人必须控制某段网络。
因为IPS是旁路部署,所以只能通过发伪造包的方式来达到干扰双方正常通信的目的,正常的包其实还是会到达客户端和服务端,只不过相同序号的包操作系统已经处理过了,这些包会被认为是错误的包从而丢掉。
从原理分析,绕过IPS可以从两个方向着手:1)检测上,如果IPS在流量里检测不到攻击特征,则不会有后续动作;2)阻断上,正常包也会到达服务器,只是来晚了,如果有办法让伪造的包失效,则阻断不会发生。
30、DNS的工作原理:
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。你可以把它想象成一本巨大的电话本。属于应用层协议;
正反向解析事两个不同得名称空间,是两颗不同得解析树;
正向:ip---》主机名
反向:主机名---》ip
🔸总结域名解析过程:
按顺序查找,找到则成功退出
1.浏览器的DNS缓存查找,没有则2
2.操作系统的DNS缓存查找,没有则3
3.host文件查找,没有则4
4.TCP/IP设置的本地DNS服务器查找,没有则5
5.DNS服务器的缓存,如果缓存中也没找到,没有则6
6.13台根DNS,同上问讲的理想状态寻找,一层域,一层域找
31、cooike和session的原理。哪个更安全?
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份,Session更安全一些。
32、redis了解吗?有通过redis拿过shell吗?
Redis简介是一个开源、基于内存、高性能、可数据持久化的key-value存储系统,遵守BSD协议,可用作数据库、缓存和消息中间件。
简单来说 redis 就是一个Key-Value类型的数据库, redis 所有数据全部在内存中进行操作,并且它可以将内存中的数据定期存储在磁盘中,并且支持保存多种数据结构(String、hash、list等)。
redis的特性:支持多种数据类型、支持数据的持久化机制、支持事务控制、支持主从复制功能等。
Redis的数据存储是通过Key映射Value的方式,建立字典以保存数据。Redis共支持五种数据类型。
1)String(字符串)
Redis最基本的类型,一个key对应一个value。
(2)Hash(哈希表)
键值对集合,是一个string类型的数据域field和值value的映射表。
(3)List(列表)
字符串列表,按照插入顺序排序。支持在列表的头部或者尾部添加数据元素。
(4)Set(集合)
字符串类型的无序集合,支持添加、删除、查找,Redis还能对set进行交集、并集、差集等集合操作。
(5)Zset(有序集合)
字符串类型的有序集合,集合中的每个元素都会关联一个double类型的分数。Redis通过这个分数为集合进行排序。
Redis漏洞:
1、未授权访问漏洞
2、定时计划反弹shell
3、利用主从复制rce
周末有点累才整理好,没有检查,如果有错误请见谅
希望可以帮到大家!
喜欢这篇推送,关注领取资料↓↓↓